home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Asm / AB3DIIsrc / source_4000 / CD32JOY < prev    next >
Encoding:
Text File  |  1996-07-03  |  6.7 KB  |  437 lines

  1.  
  2. ;    opt    O+,D+,L+,P=68020
  3.  
  4.  
  5. ;    INCDIR    include:
  6.     include workbench:utilities/devpac/system.gs"
  7.     INCLUDE    utils:sysinc/libraries/lowlevel.i
  8. ;    INCLUDE    exec/exec_lib.i
  9.  
  10. _LVOReadJoyPort    EQU    -$1e
  11.  
  12.  
  13. ;    XDEF    _InitLowLevel
  14.  
  15. _InitLowLevel
  16.     lea    _lowlevel(pc),a1
  17.     moveq    #1,d0
  18.     move.l    4.w,a6
  19.     jsr    _LVOOpenLibrary(a6)
  20.     tst.l    d0
  21.     beq.s    .NoLowLib
  22.     move.l    d0,_LowBase
  23.     rts
  24.  
  25. .NoLowLib
  26.     moveq    #-1,d0
  27.     rts
  28.  
  29.  
  30. ;    XDEF    _CloseLowLevel
  31.  
  32. _CloseLowLevel
  33.     move.l    _LowBase(pc),a1
  34.     tst.l    a1
  35.     beq.s    .Exit
  36.     move.l    4.w,a6
  37.     jsr    _LVOCloseLibrary(a6)
  38. .Exit
  39.     rts
  40.  
  41.  
  42.  
  43. ; pass port number in d0 0-3
  44.  
  45. ;    XDEF    _ReadJoy
  46. _ReadJoy1
  47.     move.l a6,-(a7)
  48.     move.l #1,d0
  49.     move.l    _LowBase(pc),a6
  50.     jsr    _LVOReadJoyPort(a6)
  51.  
  52.     move.l (a7)+,a6
  53.     move.l d0,d1
  54. ;    and.l #$00FF000F,d0
  55.  
  56.     and.l    #JP_TYPE_MASK,d1
  57. ;
  58. ; bits in d1
  59. ;
  60. ;
  61.     cmp.l    #JP_TYPE_NOTAVAIL,d1     
  62.     beq.b    .Empty
  63.  
  64.     cmp.l    #JP_TYPE_GAMECTLR,d1 
  65.     beq.b    .GameCtrl
  66.  
  67.     cmp.l    #JP_TYPE_MOUSE,d1    
  68.     beq    .Mouse
  69.  
  70.     cmp.l    #JP_TYPE_JOYSTK,d1   
  71.     beq    .Joystick
  72.  
  73. ;    cmp.l    #JP_TYPE_UNKNOWN,d1  
  74. ;
  75. ;
  76. ; type is an unknown type 
  77. ;
  78. .Empty
  79. ;
  80.     rts
  81. ;
  82. .GameCtrl
  83.  
  84. ;    these are the bit defs..
  85. ;
  86. ;     JPF_BUTTON_BLUE         Blue - Stop
  87. ;     JPF_BUTTON_RED          Red - Select
  88. ;     JPF_BUTTON_YELLOW       Yellow - Repeat
  89. ;     JPF_BUTTON_GREEN        Green - Shuffle
  90. ;     JPF_BUTTON_FORWARD      Charcoal - Forward
  91. ;     JPF_BUTTON_REVERSE      Charcoal - Reverse
  92. ;     JPF_BUTTON_PLAY         Grey - Play/Pause
  93. ;     JPF_JOY_UP              Up
  94. ;     JPF_JOY_DOWN            Down
  95. ;     JPF_JOY_LEFT            Left
  96. ;     JPF_JOY_RIGHT           Right
  97.  
  98.  move.l #KeyMap,a5
  99.  moveq #0,d5
  100.  move.b forward_key,d5
  101.  move.l d0,d1
  102.  and.l #JPF_JOY_UP,d0
  103.  sne (a5,d5.w)
  104.  move.b backward_key,d5
  105.  move.l d1,d0
  106.  and.l #JPF_JOY_DOWN,d0
  107.  sne (a5,d5.w)
  108.  move.b turn_left_key,d5
  109.  move.l d1,d0
  110.  and.l #JPF_JOY_LEFT,d0
  111.  sne (a5,d5.w)
  112.  move.b turn_right_key,d5
  113.  move.l d1,d0
  114.  and.l #JPF_JOY_RIGHT,d0
  115.  sne (a5,d5.w)
  116.  
  117.  move.b fire_key,d5
  118.  move.l d1,d0
  119.  and.l #JPF_BUTTON_GREEN,d0
  120.  sne (a5,d5.w)
  121.  
  122.  move.b operate_key,d5
  123.  move.l d1,d0
  124.  and.l #JPF_BUTTON_YELLOW,d0
  125.  sne (a5,d5.w)
  126.  
  127.  move.b run_key,d5
  128.  move.l d1,d0
  129.  and.l #JPF_BUTTON_RED,d0
  130.  sne (a5,d5.w)
  131.  
  132.  move.b duck_key,d5
  133.  move.l d1,d0
  134.  and.l #JPF_BUTTON_BLUE,d0
  135.  beq.s .notduckbutpre
  136.  tst.b .ducklast
  137.  bne.s .notduckbut
  138.  st (a5,d5.w)
  139.  st .ducklast
  140.  bra.s .notduckbut
  141. .notduckbutpre:
  142.  clr.b .ducklast
  143. .notduckbut:
  144.  
  145.  move.b force_sidestep_key,d5
  146.  move.l d1,d0
  147.  and.l #JPF_BUTTON_FORWARD,d0
  148.  sne (a5,d5.w)
  149.  
  150.  move.b jump_key,d5
  151.  move.l d1,d0
  152.  and.l #JPF_BUTTON_REVERSE,d0
  153.  sne (a5,d5.w)
  154.  
  155.  move.l d1,d0
  156.  and.l #JPF_BUTTON_PLAY,d0
  157.  beq.s .nonextweappre
  158.  
  159.  tst.b PLR1_GunFrame
  160.  bne.s .nonextweappre
  161.  
  162.  tst.b .heldlast
  163.  bne.s .nonextweap
  164.  st .heldlast
  165.  
  166.  moveq #0,d0
  167.  move.b PLR1_GunSelected,d0
  168.  move.l #PLAYERONEGUNS,a0
  169.  
  170.  
  171. .findnext
  172.  addq #1,d0
  173.  cmp.w #9,d0
  174.  ble.s .okgun
  175.  moveq #0,d0
  176. .okgun:
  177.  tst.w (a0,d0.w*2)
  178.  beq.s .findnext
  179.  
  180.  move.b d0,PLR1_GunSelected 
  181.  jsr SHOWPLR1GUNNAME
  182.   
  183.  bra .nonextweap
  184.  
  185. .nonextweappre:
  186.  clr.b .heldlast
  187. .nonextweap:
  188.  
  189.  
  190.  rts
  191.  
  192. .heldlast: dc.b 0
  193. .ducklast: dc.b 0
  194.  
  195. .Joystick
  196.  
  197.  move.l #KeyMap,a5
  198.  move.l #SineTable,a0
  199.  
  200.  btst #1,$dff00c
  201.  sne d0
  202.  btst #1,$dff00d
  203.  sne d1
  204.  btst #0,$dff00c
  205.  sne d2
  206.  btst #0,$dff00d
  207.  sne d3
  208.  moveq #0,d5
  209.  move.b fire_key,d5
  210.  btst #7,$bfe001
  211.  seq (a5,d5.w)
  212.  
  213.  move.b turn_left_key,d5
  214.  move.b d0,(a5,d5.w)
  215.  move.b turn_right_key,d5
  216.  move.b d1,(a5,d5.w)
  217.  eor.b d0,d2
  218.  move.b forward_key,d5
  219.  move.b d2,(a5,d5.w)
  220.  eor.b d1,d3
  221.  move.b backward_key,d5
  222.  move.b d3,(a5,d5.w)
  223.  rts
  224.  
  225. .Mouse
  226.     rts
  227.  
  228.  
  229.  
  230.  
  231. _ReadJoy2
  232.     move.l a6,-(a7)
  233.     move.l #1,d0
  234.     move.l    _LowBase(pc),a6
  235.     jsr    _LVOReadJoyPort(a6)
  236.  
  237.     move.l (a7)+,a6
  238.     move.l d0,d1
  239. ;    and.l #$00FF000F,d0
  240.  
  241.     and.l    #JP_TYPE_MASK,d1
  242. ;
  243. ; bits in d1
  244. ;
  245. ;
  246.     cmp.l    #JP_TYPE_NOTAVAIL,d1     
  247.     beq.b    .Empty
  248.  
  249.     cmp.l    #JP_TYPE_GAMECTLR,d1 
  250.     beq.b    .GameCtrl
  251.  
  252.     cmp.l    #JP_TYPE_MOUSE,d1    
  253.     beq    .Mouse
  254.  
  255.     cmp.l    #JP_TYPE_JOYSTK,d1   
  256.     beq    .Joystick
  257.  
  258. ;    cmp.l    #JP_TYPE_UNKNOWN,d1  
  259. ;
  260. ;
  261. ; type is an unknown type 
  262. ;
  263. .Empty
  264. ;
  265.     rts
  266. ;
  267. .GameCtrl
  268.  
  269. ;    these are the bit defs..
  270. ;
  271. ;     JPF_BUTTON_BLUE         Blue - Stop
  272. ;     JPF_BUTTON_RED          Red - Select
  273. ;     JPF_BUTTON_YELLOW       Yellow - Repeat
  274. ;     JPF_BUTTON_GREEN        Green - Shuffle
  275. ;     JPF_BUTTON_FORWARD      Charcoal - Forward
  276. ;     JPF_BUTTON_REVERSE      Charcoal - Reverse
  277. ;     JPF_BUTTON_PLAY         Grey - Play/Pause
  278. ;     JPF_JOY_UP              Up
  279. ;     JPF_JOY_DOWN            Down
  280. ;     JPF_JOY_LEFT            Left
  281. ;     JPF_JOY_RIGHT           Right
  282.  
  283.  move.l #KeyMap,a5
  284.  moveq #0,d5
  285.  move.b forward_key,d5
  286.  move.l d0,d1
  287.  and.l #JPF_JOY_UP,d0
  288.  sne (a5,d5.w)
  289.  move.b backward_key,d5
  290.  move.l d1,d0
  291.  and.l #JPF_JOY_DOWN,d0
  292.  sne (a5,d5.w)
  293.  move.b turn_left_key,d5
  294.  move.l d1,d0
  295.  and.l #JPF_JOY_LEFT,d0
  296.  sne (a5,d5.w)
  297.  move.b turn_right_key,d5
  298.  move.l d1,d0
  299.  and.l #JPF_JOY_RIGHT,d0
  300.  sne (a5,d5.w)
  301.  
  302.  move.b fire_key,d5
  303.  move.l d1,d0
  304.  and.l #JPF_BUTTON_GREEN,d0
  305.  sne (a5,d5.w)
  306.  
  307.  move.b operate_key,d5
  308.  move.l d1,d0
  309.  and.l #JPF_BUTTON_YELLOW,d0
  310.  sne (a5,d5.w)
  311.  
  312.  move.b run_key,d5
  313.  move.l d1,d0
  314.  and.l #JPF_BUTTON_RED,d0
  315.  sne (a5,d5.w)
  316.  
  317.  move.b duck_key,d5
  318.  move.l d1,d0
  319.  and.l #JPF_BUTTON_BLUE,d0
  320.  beq.s .notduckbutpre 
  321.  tst.b .ducklast
  322.  bne.s .notduckbut
  323.  st .ducklast
  324.  st (a5,d5.w)
  325.  bra .notduckbut
  326. .notduckbutpre:
  327.  clr.b .ducklast
  328. .notduckbut:
  329.  
  330.  
  331.  move.b jump_key,d5
  332.  move.l d1,d0
  333.  and.l #JPF_BUTTON_REVERSE,d0
  334.  sne (a5,d5.w)
  335.  
  336.  move.b force_sidestep_key,d5
  337.  move.l d1,d0
  338.  and.l #JPF_BUTTON_FORWARD,d0
  339.  sne (a5,d5.w)
  340.  
  341.  move.l d1,d0
  342.  and.l #JPF_BUTTON_PLAY,d0
  343.  beq.s .nonextweappre
  344.  
  345.  tst.b PLR2_GunFrame
  346.  bne.s .nonextweappre
  347.  
  348.  tst.b .heldlast
  349.  bne.s .nonextweap
  350.  st .heldlast
  351.  
  352.  moveq #0,d0
  353.  move.b PLR2_GunSelected,d0
  354.  move.l #PLAYERTWOGUNS,a0
  355.  
  356. .findnext
  357.  addq #1,d0
  358.  cmp.w #9,d0
  359.  ble.s .okgun
  360.  moveq #0,d0
  361. .okgun:
  362.  tst.w (a0,d0.w*2)
  363.  beq.s .findnext
  364.  
  365.  move.b d0,PLR2_GunSelected 
  366.  jsr SHOWPLR2GUNNAME
  367.  
  368.  bra .nonextweap
  369.  
  370. .nonextweappre:
  371.  clr.b .heldlast
  372. .nonextweap:
  373.  
  374.  
  375.  rts
  376.  
  377. .heldlast: dc.b 0
  378. .ducklast: dc.b 0
  379.  
  380. .Joystick
  381.  
  382.  move.l #KeyMap,a5
  383.  move.l #SineTable,a0
  384.  
  385.  btst #1,$dff00c
  386.  sne d0
  387.  btst #1,$dff00d
  388.  sne d1
  389.  btst #0,$dff00c
  390.  sne d2
  391.  btst #0,$dff00d
  392.  sne d3
  393.  moveq #0,d5
  394.  move.b fire_key,d5
  395.  btst #7,$bfe001
  396.  seq (a5,d5.w)
  397.  
  398.  move.b turn_left_key,d5
  399.  move.b d0,(a5,d5.w)
  400.  move.b turn_right_key,d5
  401.  move.b d1,(a5,d5.w)
  402.  eor.b d0,d2
  403.  move.b forward_key,d5
  404.  move.b d2,(a5,d5.w)
  405.  eor.b d1,d3
  406.  move.b backward_key,d5
  407.  move.b d3,(a5,d5.w)
  408.  rts
  409.  
  410. .Mouse
  411.     rts
  412.  
  413.  
  414. ;BUTVALS
  415. ; dc.l JPF_BUTTON_BLUE         Blue - Stop
  416. ; dc.l JPF_BUTTON_RED          Red - Select
  417. ; dc.l JPF_BUTTON_YELLOW       Yellow - Repeat
  418. ; dc.l JPF_BUTTON_GREEN        Green - Shuffle
  419. ; dc.l JPF_BUTTON_FORWARD      Charcoal - Forward
  420. ; dc.l JPF_BUTTON_REVERSE      Charcoal - Reverse
  421. ; dc.l JPF_BUTTON_PLAY         Grey - Play/Pause
  422. ; dc.l JPF_JOY_UP              Up
  423. ; dc.l JPF_JOY_DOWN            Down
  424. ; dc.l JPF_JOY_LEFT            Left
  425. ; dc.l JPF_JOY_RIGHT           Right
  426.  
  427. Data:
  428.  
  429. _LowBase
  430.     dc.l    0
  431.  
  432. _lowlevel
  433.     dc.b    'lowlevel.library',0
  434.     even
  435.  
  436. ;    END
  437.